iT邦幫忙

2025 iThome 鐵人賽

DAY 15
0
自我挑戰組

30天用Python打造你的數位金融實力:從零開始的FinTech入門筆記系列 第 15

交易紀錄分析+盈虧報表:用 Python 讀懂自己的投資成績單

  • 分享至 

  • xImage
  •  

歡迎來到「30天用Python打造你的數位金融實力」系列的第15天!
今天我們終於要從「看市場」轉到「看自己」了。因為再多的技術指標、再厲害的投資策略,如果你連自己的交易紀錄都沒整理過,其實很難知道自己真正的投資表現。

我們今天要做的事情,就是用 Python 幫你自動化生成一份 盈虧報表 (P&L Report),快速回答幾個問題:

  • 我這個月賺了多少?虧了多少?
  • 哪些交易是成功的?哪些是賠錢的?
  • 我的勝率、平均報酬率是多少?

實際應用場景

想像一下:
你在交易所下載了一份 交易紀錄 CSV,通常會長這樣:

日期 幣種 動作 價格 數量 手續費
2025-08-01 BTC 買入 65000 0.01 5
2025-08-10 BTC 賣出 70000 0.01 5
2025-08-12 ETH 買入 3000 0.5 3

如果我們要手動算盈虧,會非常麻煩。
這時候 Python 就派上用場了!

程式範例:交易紀錄盈虧計算

import pandas as pd

# 讀取交易紀錄
df = pd.read_csv("trades.csv")

# 建立一個空的 DataFrame 來儲存計算後的報表
report = pd.DataFrame(columns=["幣種", "總買入", "總賣出", "手續費", "盈虧"])

# 按幣種統計盈虧
for coin, group in df.groupby("幣種"):
    buy = (group[group["動作"] == "買入"]["價格"] * group[group["動作"] == "買入"]["數量"]).sum()
    sell = (group[group["動作"] == "賣出"]["價格"] * group[group["動作"] == "賣出"]["數量"]).sum()
    fee = group["手續費"].sum()
    pnl = sell - buy - fee
    
    report = report.append({
        "幣種": coin,
        "總買入": buy,
        "總賣出": sell,
        "手續費": fee,
        "盈虧": pnl
    }, ignore_index=True)

print(report)

輸出結果範例

幣種 總買入 總賣出 手續費 盈虧
BTC 650 700 5 45
ETH 1500 0 3 -1503

可視化盈虧

有了盈虧數據,我們可以用 matplotlib 畫出直條圖,更直覺地看到每個幣種的表現。

import matplotlib.pyplot as plt

plt.bar(report["幣種"], report["盈虧"])
plt.title("各幣種盈虧情況")
plt.ylabel("盈虧金額")
plt.show()

小結

  1. 交易紀錄分析很重要:別只看市場,要學會檢視自己。
  2. Python 幫你自動化:輕鬆生成盈虧報表,節省時間避免人工出錯。
  3. 數據就是鏡子:知道自己賺在哪裡、虧在哪裡,才能調整策略。

上一篇
打造「自選代幣追蹤表」:一鍵監控漲跌+波動提醒
下一篇
Python 幫你自動記帳-個人消費追蹤小幫手
系列文
30天用Python打造你的數位金融實力:從零開始的FinTech入門筆記30
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言